//介绍 for循环的知识
//结构组成 for(条 件 1 ;   条 件 2 ;   条 件 3)
//      条件1（初始化） 条件2（条件判断，是否进入循环） 条件3（调整）
#include <stdio.h>
int main(){
	int a=0,i=0,j=0,x=0,y=0,u=0,p=0,q=0,w=0;
	for( i=0;i<3;i++)//为什么要堆在一起呢？因为这样更方便，更集中，所有条件一目了然。它也是目前用得最多的循环，其次时while
	{
		for(j=0;j<3;j++)
		{
			printf("%d-%d-hehe\n",i,j);//此时内循环一共 9遍
		}
	}
		for(;p<3;p++)//当条件一不写的时候会发生什么？
	{
		for(;q<3;q++)
		{
			printf("hehe\n");//Yes！一共只循环 3遍，why？
		}//因为，由于第二个循环没写条件 1，因此当外循环每循环一次以后，j没有初始化为 0，
		//按道理外循环一遍结束以后（即内循环已经循环了3遍，即内循环结束）再重新进入内循环时j=0重新循环。
		//没有条件一，没有初始化，因此 j=3，无法进入内循环，外循环共循环 3次，其中一次进入内循环（内循环执行了3次），所以一共打印 3次
	}
	

//假设不写条件2会怎样？
/*		for(j=0;;j++)
		{
			printf("hehe\n",j);//没有条件2，即没有条件需要判断是否结束循环（没有限制），因此会无限循环
		}*/

//以上说明无论少了条件几都可以运行，但是非必要，不要写少
		
		
//11111循环变种1
		for(x=0,y=0;x<10 && y<=9;x++,++y)//可以有多个变量控制循环
		{//	 	 左闭右开  左闭右闭，看以上是 x的左闭右开的写法好还是 y的左闭右闭的写法好
		//x代表循环10次，y也代表循环10次，哪种写法更直观，很明显前者更数字是10，循环10次更加直观明了
		//一般情况下都推荐左闭右开的写法。当然也有左闭右闭更好的时候，比如输出100-200，即一般不是 0开头的，左闭右闭更好
			printf("%d-nice!\n",x+1);//10次
		}
		
		
//2222循环变种 2
	for(int e=0;e<3;e++)//这种在循环条件里才定义的写法，只有在支持c99语法的环境才可以使用，一般不推荐这种写法
	{
			printf("OK\n");
	}
	for(w=0;w=0;w++)
		printf("www");//打印几次？1次？0次？无数次？
		//答案是0次，猜到了？那为什么？
		//条件2是什么意思，赋值，给 w赋值为 0，0是啥，0是假，条件2的作用就是判断，既然为假，则不执行
}